上篇介紹了PHP的陣列宣告、印出方式,這篇想和大家介紹PHP常用的陣列函數有哪些
1. in_array
如果想檢查此value是否存在於陣列中,可使用in_array,語法為in_array(要檢查的value , 要被檢查的陣列)
讓我們看以下範例
PHP:
$selfKey = array("Tom"=>"60", "Amy"=>"50", "Eason"=>"65", "Joker"=>"100");
$check_value = 100;
echo "檢查value是否存在於陣列中:<br>";
//in_array(要檢查的value, 要被檢查的陣列);
if (in_array($check_value, $selfKey)) {
echo "查到value值".$check_value;
} else {
echo "查無".$check_value."這個value值";
}
結果如下圖所示:
2. array_key_exists
如果想檢查此key是否存在於陣列中,可使用array_key_exists,語法為array_key_exists (要檢查的key , 要被檢查的陣列)
讓我們看以下範例
PHP:
$check_key = "Eason";
echo "檢查key值是否存在於陣列中:<br>";
//array_key_exists(要檢查的key, 要被檢查的陣列);
if (array_key_exists($check_key, $selfKey)) {
echo "查到key值".$check_key;
} else {
echo "查無".$check_key."這個key值";
}
結果如下圖所示:
3. array_combine
如果想結合兩個陣列,可使用array_combine形成一個新的陣列,語法為array_combine (欲做為key的陣列 , 欲做為value的陣列)
但請注意,兩者陣列元素數量必須相同!
讓我們看以下範例
PHP:
$name = array("Tom", "Amy", "Eason", "Joker");
$weight = array("60", "50", "65", "100");
echo "結合2個陣列(注意:陣列元素數量必須相同)<br>";
echo "將name和weight合併後的combine陣列為:<br>";
//array_combine(欲做為key的陣列, 欲做為value的陣列);
$combine = array_combine($name, $weight);
print_r($combine);
結果如下圖所示:
4. 陣列聚合(+)
陣列聚合和array_combine名字很相似,但完全不一樣喔!!
陣列聚合是用運算子的+
,所以「+的後者」會接在「+的前者」後面,形成一個新的陣列,你可以選擇再宣告一個變數儲存,也可以直接用print_r
印出
讓我們看以下範例
PHP:
$array_1 = array("10" => "ten", "20" => "twenty");
$array_2 = array("100" => "one hundred", "200" => "two hundred", "300" => "three hundred");
echo "陣列聚合範例:<br>";
$array_50 = $array_1 + $array_2;
$array_60 = $array_2 + $array_1;
echo "陣列1(2筆)+陣列2(3筆):<br>";
print_r($array_50);
echo "<br><br>";
echo "陣列2(3筆)+陣列1(2筆):<br>";
print_r($array_2 + $array_1);
結果如下圖所示:
5. 陣列比對(==、===)
如果你想比對兩個陣列「key對應到的value」是否相同,可以用==
去比對,若相同則回傳true
,不同則回傳false
如果你想相同,且順序一樣,則可以用===
去比對
讓我們看以下範例
PHP:
$array_20 = array("one thousend", "two thousend");
$array_30 = array(1 => "two thousend", 0 => "one thousend");
echo "陣列比對範例:<br>";
//$a == $b 如果兩個陣列有相同的key和value,則回傳true,否則回傳false
//$a === $b 同上,但多了一個=,代表需要順序相同,且型態也相同,才會回傳true
var_dump($array_20 == $array_30);
echo "<br><br>";
var_dump($array_20 === $array_30);
echo "<br><br>";
$array_40 = ($array_20 == $array_30);
var_dump($array_40);
結果如下圖所示:
6. array_search
如果想搜尋此value是否在陣列裡,可使用array_search,語法為array_search (要搜尋的value, 要被搜尋的陣列)
若搜尋成功會回傳key值
,否則會回傳false
讓我們看以下範例
PHP:
$array_70 = array("70" => "seventy", "80" => "eighty", "90" => "ninety");
echo "陣列搜尋範例:<br>";
//array_search(要搜尋的value值, 要被搜尋的陣列);
//搜尋成功回傳key值,否則回傳false
$searchKey = array_search("ninety", $array_70);
echo "搜尋到的key值為".$searchKey;
結果如下圖所示:
7. isset
若想檢查此變數有無設置,可使用isset($變數)
讓我們看以下範例
PHP:
$array_10 = array("10" => "ten", "20" => "twenty", "30" => "thirty");
$isset_Key = "20";
echo "用isset()檢查值有無設置:<br>";
if (isset($array_10[$isset_Key])) {
echo $isset_Key."的value值為".$array_10[$isset_Key];
} else {
echo "查無此人資料";
}
結果如下圖所示:
8. empty
若想檢查此變數是否為空值,可使用empty($變數)
0
、空字串(“ ”)
、null
…等都皆為空值
讓我們看以下範例
PHP:
$array_100 = array("100" => "", "200" => "two hundred", "300" => "three hundred");
$empty_Key = "100";
echo "用empty判斷是否有值:<br>";
if(empty($array_100[$empty_Key])) {
echo "查無資料";
} else {
echo $empty_Key."的value值為".$array_100[$empty_Key];
}
結果如下圖所示:
9. array_intersect
若你想取兩個陣列的value「交集」,可使用array_intersect,語法為array_intersect(要檢查的陣列 , 要被比對的陣列)
因為是比對value,所以「key值不一樣」也會被視為交集
讓我們看以下範例
PHP:
$array_400 = array("400" => "four hundred", "500" => "five hundred", "600" => "six hundred", "700" => "seven hundred");
$array_700 = array("700" => "seven hundred", "800" => "four hundred", "900" => "nine hundred");
//array_intersect(要檢查的陣列, 要被比對的陣列);
$result_inrersect_1 = array_intersect($array_400, $array_700);
$result_inrersect_2 = array_intersect($array_700, $array_400);
echo "陣列交集範例<br>";
print_r($result_inrersect_1);
echo "<br><br>";
print_r($result_inrersect_2);
echo "<br><br>";
結果如下圖所示:
10. array_diff
如果你想取兩個陣列的value「差集」,可使用array_diff,語法為array_diff(要檢查的陣列 , 要被比對的陣列)
這裡我們用上面9. array_intersect
的$array_400
和$array_700
做示範
讓我們看以下範例
PHP:
//array_diff(要檢查的陣列, 要被比對的陣列);
$result_diff_1 = array_diff($array_400, $array_700);
$result_diff_2 = array_diff($array_700, $array_400);
echo "陣列差集範例<br>";
print_r($result_diff_1);
echo "<br><br>";
print_r($result_diff_2);
echo "<br><br>";
結果如下圖所示:
以上就是常用的陣列函數語法
希望大家看完能更加了解